草庐IT

c++ - C++ 中复杂的 Typedef

全部标签

c++ - typedef 和在同一范围内使用相同名称的声明

我搜索了C++11标准(嗯,n3242草案)和互联网,但找不到准确的答案。下面的代码可以在clang3.2和g++4.7.2以及VisualStudio2010中正常编译,但我预计会出现错误。#include#includetypedefinta_t;namespacea_ns{classa_t{};}usinga_ns::a_t;intmain(){a_ta;std::cout内置:clang-std=c++11-pedantic-Wall-oaa.cpp-lstdc++g++-std=c++11-pedantic-Wall-oaa.cpp-lstdc++cl-EHsc-GRa.cp

c++ - C++ 中复杂用户定义类型的 RVO

在我昨天的编程面试中,我必须编写的一个程序最终有这样的东西:structBlob{//basicfieldcontainingimageblobstatistics.};std::vectorfind_blobs(constImage&...){std::vectorblobs;//...returnblobs;}我熟悉returnvalueoptimization(RVO),所以我刚刚提到返回vector不会导致流行编译器上的复制(最后一行有一个return语句,并且在我编写的代码中没有控制路径可以返回另一个对象)。但是,面试官告诉我,自Blob可能是复杂的用户定义类型(UDT),编

c++ - 强枚举 typedef : clang bug or c++11 standard uncertainty?

对于这样的代码:typedefenumFooEnum:intFooEnum;enumFooEnum:int{A=1,B};clang(linux/7.0.0)报告没有错误[-c-std=c++11-pedantic],但是gcc(linux/8.2.1)不编译它:g++-c-std=c++11-pedantictest2.cpptest2.cpp:1:28:error:expected';'or'{'before'FooEnum'typedefenumFooEnum:intFooEnum;^~~~~~~test2.cpp:1:28:error:expectedclass-keybefo

c++ - 无法与 typedef 成为 friend : any particular reason?

structA{};typedefAB;structC{friendstructB;};GCC4.7.020110427告诉我error:usingtypedef-name'B'after'struct'.到目前为止,这似乎是不言自明的;毕竟,我的示例代码试图声明并加好友struct称为B,实际上不是struct-key.但是,我必须写friendstructA;如果A实际上是一个复杂的、冗长的模板元黑客,这是不可取的。我是不是遗漏了什么,或者我们实际上可以不friend通过类型别名类型?如果不是,是否有任何特殊原因或者只是语言的怪癖?Thisquestion之前提出过这个问题,但是已

c++ - 为什么C++ STL map容器的复杂度是O(log(n))?

对于vector和list等C++STL容器,查找元素并插入或删除它们的复杂性是不言自明的。然而,对于map容器,尽管我从阅读中知道访问和插入复杂度/性能是O(log(n)),但我无法弄清楚为什么。显然,我对map的理解程度还不够,因此非常感谢对这个主题的一些启发。 最佳答案 映射或集合的元素包含在树结构中;每次检查树的节点时,您都​​会确定要查找/插入的元素是小于还是大于该节点。您需要执行此操作的次数(对于适当平衡的树)是log2(N),因为每次比较都会排除一半的可能性。 关于c++-

c++ - c++ 中的复杂 dynamic_cast

我在C++中有以下情况:抽象基类Abstract1和Abstract2。它们是无关的。类Foo派生自Abstract1和Abstract2我在一个编译单元中,我没有关于类Foo的信息(没有声明,没有定义)。只有Abstract1和Abstract2是已知的。(实际上,Foo甚至定义在一个DLL中)dynamic_cast是否允许从Abstract1*转换为Abstract2*?这是标准吗? 最佳答案 你所描述的是所谓的cross-cast。对于dynamic_cast(v),标准在[expr.dynamic.cast]/8中指定If

c++ - 重载运算符<<(unsigned char typedef as byte)

我想重载(劫持?)ostream和basic_ostream以便它停止尝试将八位字节(无符号字符)显示为可打印字符。我一直住在cout和friend们在屏幕上放笑脸的时间太长了。我厌倦了与Actor一起工作:hex.是否可以覆盖标准行为?我已经尝试过模板和非模板覆盖。它们编译,但似乎没有被调用。 最佳答案 问题是已经有一个templatestd::basic_ostream&operator&,charT);在namespacestd.自basic_ostream也在这个命名空间中,ADL在你输出unsignedchar时选择它.添

c++ - "constant"复杂度的真正含义是什么?时间?复制/移动的数量?

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter为指导。9年前关闭。我可以想到C++中的三个操作,它们在某种意义上可以被描述为具有“恒定”的复杂性。我已经看到一些关于这意味着什么的争论(*),在我看来,我们可以说“所有这些操作都是恒定的,但有些比其他操作更恒定”:-)(编辑2:如果您已经认为自己知道答案,请在过早进入之前阅读此问题的一些辩论:Whatdatastructure,exactly,aredequesinC++?很

c++ - 具有 typedef 返回值的模板化成员函数

为什么下面的代码给我一个错误(g++4.1.2)?templateclassFoo{public:typedefstd::vectorAVec;AVec*foo();};templateFoo::AVec*Foo::foo(){//erroronthislinereturnNULL;}错误是:error:expectedconstructor,destructor,ortypeconversionbefore'*'token我应该如何定义Foo::foo()以其他方式运行(具有正确的返回类型)? 最佳答案 这是一个名为“two-st

MongoDB复杂分组聚合查询

目录1聚合查询1.1MongoDB的聚合查询2聚合管道方法2.1聚合流程2.1.1详细流程2.2聚合语法2.2.1参数说明2.2.2注意事项2.3常用聚合管道2.3.1与mysql聚合类比3使用示例3.1统计所有数据3.2对所有城市人数求合3.3对城市缩写相同的城市人数求合3.4state重复的城市个数3.5state重复个数大于100的城市4MapReduce4.1什么是MapReduce4.1.1执行阶段4.1.2语法4.1.3使用示例4.1.4编程语法想学习架构师构建流程请跳转:Java架构师系统架构设计1聚合查询MongoDB快速入门:https://blog.csdn.net/ZGL